package com.LC._121;

class Solution {
    public int maxProfit(int[] prices) {
// 原始版本
// i表示第i天，取值[0, n)
// k表示到今天（第i天）已经交易了k次（注：这里说的是已经卖出了k次），取值 [0, K]
// j表示当前天是否持有股票，取值为 0或1
        int n = prices.length;
        int[][] dp = new int[n][2];
        for (int i = 0; i < n; i++) {
            if (i - 1 == -1) {
                // base case
                dp[i][0] = 0;//卖出
                dp[i][1] = -prices[i];//买入
                continue;
            }
            dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1] + prices[i]);//计算卖出的最大值
            //dp[i][0] = Math.max(上一次卖出得到的钱  上一次不卖出得到的钱);
            dp[i][1] = Math.max(dp[i-1][1], -prices[i]);//计算亏损的最小值
            //dp[i][0] = Math.max(上一次买入得到的钱  上一次不买入得到的钱);
        }
        return dp[n - 1][0];

    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums=new int[]{7,1,5,3,6,4};
        System.out.println(solution.maxProfit(nums));
    }
}